package com.kaochong.xcx.service;

import com.kaochong.xcx.entity.User;
import com.kaochong.xcx.entity.UserInfo;
import com.kaochong.xcx.pojo.cache.WordModel;
import com.kaochong.xcx.pojo.dto.TargetPeopleDTO;
import com.kaochong.xcx.web.aspect.CurrentUser;

import java.util.List;
import java.util.Map;

/**
 * @author han
 * @date 2018-05-01 13:19
 */
public interface UserService {
	
	/**
	 * 微信登录
	 * @param openId
	 * @param nickname
	 * @param portrait
	 * @param fromWhere
	 * @return
	 */
	Map<String, Object> login(String openId, String nickname, String portrait, String fromWhere);
	
	/**
	 * 切换单词书
	 * @param user
	 * @param target
	 * @return 此次培养目标唯一标识
	 */
	String updateUserTarget(CurrentUser user, Integer target);
	
	/**
	 * 重置单词书
	 * @param user
	 * @param target
	 * @return
	 */
	void resetUserTarget(CurrentUser user, Integer target);
	
	/**
	 * 开启下一阶段
	 * @param user
	 */
	void openNext(CurrentUser user);
	
	/**
	 * 用户今日单词
	 * @param user
	 * @return
	 */
	List<WordModel> todayWords(CurrentUser user);
	
	/**
	 * 新版用户接口
	 * @param user
	 * @return
	 */
	Map<String,Object> getUserInfoV1(CurrentUser user);
	
	/**
	 * 用户学习进度
	 * @param userId
	 * @return
	 */
	List<Map<String, Object>> studySchedule(Long userId);
	
	/**
	 * openId查用户
	 * @param openId
	 * @return
	 */
	User findByOpenId(String openId);
	
	/**
	 * 查询用户此单词书详细信息
	 * @param userId
	 * @param target
	 * @return
	 */
	UserInfo findUserInfo(Long userId, Integer target);
	
	/**
	 * 查询所有单词书，每本单词书学习人数
	 * @return
	 */
	List<TargetPeopleDTO> findEveryTargetCount();
	
	List<User> findAllLuckyUser(String prizeDate);
}
